iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
DevOps

從題目中學習k8s系列 第 12

【從題目中學習k8s】-【Day12】第四題 - Pod & Namespace

  • 分享至 

  • xImage
  •  

title: 【從題目中學習k8s】-【Day12】第四題 - Pod & Namespace
description: 以無比的恆毅力堅持30天鍊成鐵人--連續30天,一天發表一篇IT技術文章

【從題目中學習k8s】-【Day12】第四題 - Pod & Namespace

tags: DevOps CICD K8s Docker

Question

Create a Pod as follows:

Name: jenkins

Using image: jenkins

In a new Kubernetes namespace named website-frontend

概念

這題出現了一個新名詞namespace,那麼namespace是甚麼呢?

namespace其實就是實現資源隔離的方式,不同的namespaces的物件無法互相存取。透過namespace,邏輯上將不同專案、團隊或使用者分群。

K8s 預設存在的 namespace 有三個:

  • default
    K8s集群建立時自動創建,一般對K8s物件的操作都在default namespace中完成
  • kube-system
    K8s在集群建立時會為了某些目的創建一系列的PodService,例如weave net CNI、DNS Service等,通常是一些維持集群運作的重要物件。為了預防這些物件不小心被使用者刪除或更改導致集群毀損,必須將這些物件獨立於其它物件,因此會將這些物件放置於kube-system這個namespace之下
  • kube-public
    namespace也是由K8s自動創建,當有些resources需要讓所有user都能access到時,會利用此namespace

namespace的用武之地在於大型的應用場景,像是一間公司、一個產品開發等,你可能想區隔不同部門或不同階段的開發有不同的資源,那就可以透過assign不同namespace的資源數量來達到。

剛才我們說到不同的namespaces的物件無法互相存取,其實這個說法不太精確,它們還是可以透過DNS互相存取的,只是方法不太一樣,舉例來說:

有兩個namespace: default和database,mess-pod可以透過host name直接存取到相同namespace的web-service: mysql.connect("web-service");若要存取到database namespace中的db-service則無法直接存取,需要透過: mysql.connect("db-service.database.svc.cluster.local")。下面講解一下這些欄位代表的意義:

  • cluster.local:default domain name of kubernetes cluster
  • svc:sub-domain of service
  • database:namespace
  • db-service:service name

相關namespace指令如下:

## 查看<namespace-name>下的pod
$ kubectl get po --namespace=<namespace-name>
$ kubectl get po -n <namespace-name>

## 創建namespace
$ kubectl create ns <namespace-name>

## 查看所有namespace下的pod
$ kubectl get po -A

回到這題,這題其實很簡單,步驟如下:

  1. 創建一個namespace
  2. 在此namespace下創立Pod

Answer

$ kubectl create ns website-frontend

$ kubectl run jenkins --image=jenkins --restart=Never --dry-run=client -o yaml > q4.yaml

$ kubectl apply -f q4.yaml -n website-frontend

結論

今天這題也不難,主要是帶入namespace的概念,其實namespace不是K8s獨有的機制,其他很多地方也能見到,所以有概念的朋友應該很快就能了解了。好啦,今天就到這囉~ 謝謝大家~

參考資料

Thank you!

You can find me on


上一篇
【從題目中學習k8s】-【Day11】第三題 - Service
下一篇
【從題目中學習k8s】-【Day13】第五題 - Secret
系列文
從題目中學習k8s31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言